実践ソフトウェアエンジニアリング 第 9 版
原著 : Software Engineering: A Practitioner's Approach (9th edition)
著 : Roger S. Pressman、Bruce R. Maxim
訳 : SEPA 翻訳プロジェクト
関連ページ : https://github.com/ohmsha/sepa9th_book
感想
単語の表記が揺れまくってるのが理解を妨げてくる
例
要求モデルと分析モデルが同じ意味で使われていて、どっちの言葉も同程度出てくる (どっちかに統一して欲しい)
state diagram が状態遷移図と訳されたりステートマシン図と訳されたり
ユーザーエクスペリエンス設計などへの言及があるのが良い
翻訳について
software engineering : engineering には、エンジニアによる働きと学問の 2 つの意味があり、文脈によって異なる
基本は 「ソフトウェアエンジニアリング」 と訳し、学問であることが明確なところのみ 「ソフトウェア工学」 という訳
requirement : ユーザーや市場が持っているものは 「要求」 と訳し、システムに求められるものを 「要件」 と訳した
複合語 (要件定義など) は使用頻度が高いと思われるものを選択
mobility : 移動体端末のことで、英語圏では一般的 (日本の 「モバイル」 よりも意味が広い)
1 章 ソフトウェアとソフトウェアエンジニアリング
コンピュータソフトウェアは社会学でいうところの予期せぬ結果の法則 (the law of unintended consequences) として重要な実例
ソフトウェアはエンジニアリングされるべき
21 世紀に取り組むべきソフトウェアを構築するために
ソフトウェアによる解決策を構築する前に問題を理解する労力を費やすべき
nobuoka.icon 『イシューからはじめよ 知的生産の 「シンプルな本質」』 とか 『ライト、ついてますか ― 問題発見の人間学 ―』 でも語られていることだ
設計が中枢を担う
ソフトウェアは高品質であるべき
ソフトウェアはメンテナンス (保守) 可能であるべき
今日のソフトウェアは二重の役割
プロダクトそのもの
プロダクトを提供する手段
ソフトウェアは劣化はしないが悪化 (deteriorate) はする
ソフトウェアアプリケーションの 7 つのドメイン
レガシーソフトウェア (legacy software) は 1960 年以降、注目、憂慮されてきた
現代のソフトウェアエンジニアリングのゴールは、進化論に基づく (変化し続ける状況にソフトウェアシステムが対応する) 方法論を考え出すこと (Dayani-Fard ら)
ソフトウェアエンジニアリングの階層
1 部 ソフトウェアプロセス
2 章 プロセスモデル
ソフトウェアプロセス
3 章 アジャイルとプロセス
2001 年にアジャイルソフトウェア開発宣言 (Manifesto for Agile Software Development)
このアジャイル開発の基礎をなす考え方がアジャイル手法に繋がった
アジャイル手法は、従来のソフトウェアエンジニアリングの弱点を克服するために開発された
アジャイルプロセスとは
アジャイルアライアンスは、アジャイルを目指す組織へ 12 の原則を定める
アジャイル手法
スクラム
エクストリームプログラミング (XP)
カンバン
DevOps
4 章 推奨のプロセスモデル
アジャイルプロセスと進化型プロセスモデル (スパイラルモデル) はどう異なるか?
アジャイルプロセスの方が小規模向き、進化型プロセスモデルの方が大規模向き
推奨のプロセスモデル (実践ソフトウェアエンジニアリング 第 9 版)
5 章 ソフトウェアエンジニアリングの人間的側面
ソフトウェアエンジニアの 7 つのプロフェッショナルな特性
ソフトウェアエンジニアリングの心理学
「The Psychology of Programming in the Large: Team and Organizational Behavior」 の階層行動モデル
集団力学
組織行動論
ソフトウェアチーム
『Peopleware: Productive Projects and Teams』
ゼリー状になったチーム
2 部 モデリング
6 章 プラクティスの指針となる原則
ソフトウェアエンジニアリングプラクティス
7 章 要求エンジニアリング
要求エンジニアリング
8 章 要求モデリングの推奨手法
要求モデル
9 章 設計の概念
コーディングを遅延させずに技術的負債を返済可能な状態に保つ戦略のひとつとして利用できる設計プラクティス
多様化 (diversification)
集中 (convergence)
ソフトウェア設計
10 章 アーキテクチャ設計の推奨手法
アーキテクチャ設計
11 章 コンポーネント設計
コンポーネント設計
12 章 ユーザエクスペリエンス設計
ユーザーエクスペリエンス設計 (UX 設計)
13 章 移動体端末におけるソフトウェアの設計
ノマディックネットワーク
反復的なモバイルアプリのソフトウェア開発サイクル (Microsoft の Burns ら)
モバイルアーキテクチャ
サービスコンピューティングとクラウドコンピューティングにより、モバイルアプリ開発がより簡単に、経済的になっている
サービス指向アーキテクチャは、REST というアーキテクチャスタイルや XML、SOAP のような標準プロトコル、WSDL のようなインターフェイスを提供
クラウドアーキテクチャは 3 階層 : SaaS、PaaS、IaaS
Web アプリケーションの設計ピラミッド
品質要求ツリー (Olshina ら)
14 章 パターンに基づく設計
デザインパターン
フレームワーク
3 部 品質とセキュリティ
15 章 品質の概念
TBD
17 章 ソフトウェア品質保証
品質について人々が知らないことが問題なのではなく、みんなが知っていると思っていることが問題
この点で、品質はセックスに似ている
ソフトウェア品質保証 (あるいはソフトウェア品質マネジメント) は包括的なアクティビティ
本当に大事なことに焦点をあてて時間を使うべきだが、本当に大事なものが何かをまずは見極める必要がある
エラーと欠陥の分類に対応した問題の分類をして、数が多いものに焦点を当てるなど
シックスシグマ
ソフトウェアの信頼性は重要
ソフトウェアの安全性
ISO 9000 品質規格
品質保証システム
SQA 計画
18 章 ソフトウェアセキュリティエンジニアリング
TBD
4 部 ソフトウェアプロジェクトのマネジメント
24 章 プロジェクトマネジメントの概念
ソフトウェアプロジェクトマネジメントの 4 つの P
5 部 先端的な話題
28 章 ソフトウェアプロセス改善
ソフトウェアプロセス改善 (SPI)
TBD
#書籍 #文献